#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct btrees
{
	int data;
	int i,e;
	struct btrees *left;
	struct btrees *right;
}stree;

int consegmentr(stree **head,int i,int e,int *num)
{
	int l,r;
	stree *temp;
	temp=(stree *)malloc(sizeof(stree));
	temp->i=i;
	temp->e=e;
	temp->left=NULL;
	temp->right=NULL;
	(*head)=temp;
	if(i==e)
	{
		temp->data=num[i-1];
		return num[i-1];
	}
	else
	{
		l=consegmentr(&(temp->left),i,(i+e)/2,num);
		r=consegmentr(&(temp->right),(i+e)/2+1,e,num);
//		temp->data=l*r;
		temp->data=(l>r)?r:l;
	}
	return temp->data;
}

int segquery(stree **head,int i,int e)
{
	int si,se;
	int l,r;
	si=(*head)->i;
	se=(*head)->e;
	if(i==si&&e==se) return (*head)->data;
	if(i>(si+se)/2) return segquery(&(*head)->right,i,e);
	if(e<=(si+se)/2) return segquery(&(*head)->left,i,e);
	l=segquery(&(*head)->left,i,(si+se)/2);
	r=segquery(&(*head)->right,(si+se)/2+1,e);
//	return l*r;
	return (l>r)?r:l;
}


int main()
{
	int i,j,k;
	int n;
	int *num;
	scanf("%d",&n);
	num=(int *)malloc(n*sizeof(int));
	for(i=0;i<n;i++) num[i]=random()%10;
	for(i=0;i<n;i++) printf("%d ",num[i]);
	printf("\n");
	stree *head=NULL;
	printf("consegm %d\n",consegmentr(&head,1,n,num));
	printf("sequery %d\n",segquery(&head,4,7));
	return 0;
}

